home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
s85xx
/
s8504b.d64
/
shapes demo2
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
8KB
|
219 lines
10 REM SHAPES DEMO
20 :
30 REM RICHARD L. RYLANDER 11/23/84 (REVISED 1/20/85 TO ADD LABELING)
40 :
50 GR=49378 :REM GRAPHIK MODUS
60 TX=49411 :REM TEXT MODUS
70 :
80 LB=893 :REM LINKE GRENZE
90 RB=894 :REM RECHTE GRENZE
100 UB=895 :REM OBERE GRENZE
110 DB=896 :REM UNTERE GRENZE
120 :
130 REM FLAGS FUER VERSCHIEDENE GRAFIKMODI
140 :
150 SH=838 :REM SCHATTIERUNG: 0=RANDOM, 1=HALBTON
160 SC=839 :REM SKALIERUNG:0=NORMAL (1:1), 1=SKAL. (4:3) FUER DARSTELLUNG
170 LT=898 :REM LICHTEINFALL: 0=NORMAL, 1=VON HINTEN BELEUCHTET
180 :
190 BO=53280 :REM RAHMENFARBE
200 :
210 REM FUNKTIONSADRESSEN
220 :
230 CL=51979 :REM BITMAP BEREICH LOESCHEN
240 CO=52001 :REM COLORBEREICH FUELLEN
250 :
260 SP=52119 :REM SPHERE
270 TR=52141 :REM RING VON OBEN
280 VC=52150 :REM ZYLINDER (VERTIKALE ACHSE)
290 HC=52153 :REM ZYLINDER (HORIZONTALE ACHSE)
300 VT=52186 :REM RINGSCHNITT (VERTIKALE ACHSE)
310 HT=52189 :REM RINGSCHNITT (AXIS HORIZONTALE ACHSE)
320 VS=52203 :REM SPULE (VERTIKALE ACHSE)
330 HS=52206 :REM SPULE (HORIZONTALE ACHSE)
340 :
350 REM EINZELNE SHAPES ZEICHNEN
360 :
370 POKE SH,1 :REM HALBTONSCHATTIERUNG
380 POKE SC,1 :REM SKALIERUNG
390 POKE LT,0 :REM NORMALBELEUCHTUNG
400 SYS(CL) :REM BILDSCHIRM LOESCHEN
410 SYS(CO),17*11+1 :REM FARBKOMBINATION - DUNKELGRAU (11) WEISSE PUNKTE (1)
414 REM AUF DEN MEISTEN FARBMONITOREN
420 POKE BO,1 :REM WEISSER RAHMEN
430 SYS(GR) :REM GRAFIK EINSCHALTEN
432 RW=12:CM=14:MD=1:A$="SHAPES DEMO":GOSUB 1900:REM TITEL
434 X1=110:Y1=120:X2=210:Y2=120:BC=1:DC=7:GOSUB 1700:REM COLOR TITEL
440 POKE LB,38:POKE RB,38:POKE UB,38:POKE DB,38 :REM SHAPE FENSTER
450 SYS(SP),40,199,38
455 RW=9:CM=2:MD=1:A$="KUGEL":GOSUB1900
460 SYS(HC),120,199,38,38
465 CM=11:A$="H-ZYLND.":GOSUB1900
470 SYS(VC),200,199 :REM VOREINGESTELLTE PARAMETER WERDEN BENUTZT
475 CM=21:A$="V-ZYLIND.":GOSUB1900
480 SYS(TR),280,199,15,38
485 CM=32:A$=" RING":GOSUB1900
490 SYS(VT),40,64
495 RW=23:CM=1:A$="H-RING":GOSUB1900
500 SYS(HT),120,64
505 CM=11:A$="V-RING":GOSUB1900
510 SYS(HS),200,64,5,100
515 CM=22:A$="H-SPULE":GOSUB1900
520 SYS(VS),280,64
525 CM=32:A$="V-SPULE":GOSUB1900
530 POKE 198,0:WAIT 198,1:POKE 198,0
540 REM AUF TASTE WARTEN
550 :
560 REM ZWEI "POKALE", EINER MIT HALBTON-, DER ANDERE MIT "RANDOM"-SCHATTIERUNG
570 :
580 SYS(CL):SYS(CO),16*11+1
582 RW=14:CM=14:A$="VERGLEICH":GOSUB 1900:RW=15:CM=16:A$="ZWEIER":GOSUB 1900
584 RW=16:CM=12:A$="SCHATTIERUNGEN":GOSUB 1900:RW=18:CM=14:A$="<-- HALBTON"
586 GOSUB 1900:RW=20:CM=15:A$="RANDOM -->":GOSUB 1900
590 POKE LB,255:POKE RB,255:POKE UB,49:POKE DB,255: REM AN DEN OBEREN RAND
600 SYS(SP),80,190,80
610 POKE UB,51:POKE DB,51: REM WEITERN SPRITE-TEIL ANHAENGEN
620 SYS(VS),80,69,10,130
630 POKE DB,9:POKE UB,8
640 SYS(VT),80,9,25,45
650 POKE SH,0 :REM AUF RANDOM SCHATTIERUNG UMSCHALTEN
660 POKE LB,255:POKE RB,255:POKE UB,49:POKE DB,255
670 SYS(SP),240,190,80
680 POKE UB,51:POKE DB,51
690 SYS(VS),240,69,10,130
700 POKE DB,9:POKE UB,8
710 SYS(VT),240,9,25,45
720 POKE 198,0:WAIT 198,1:POKE 198,0
740 :
750 REM ZEICHNE "WEIN" SZENE
760 POKE LT,1 :REM HINTERGRUNGBELEUCHTUNG
770 POKE SH,1 :REM HALBTONSCHATTIERUNG FUER FLASCHENETIKETT
780 SYS(CO):SYS(CL),255: REM BITMAP FUELLEN
790 POKE BO,0 : REM SCHWARZER HINTERGRUND
792 RW=0:CM=0:MD=2:A$="ZEICHENEN MIT":GOSUB 1900:RW=1:CM=0:A$="RUECKBELEUCHTUNG"
794 GOSUB 1900:RW=2:CM=0:A$="GEGEN GESETZTEN":GOSUB 1900
796 RW=3:CM=0:A$="HINTERGRUND":GOSUB 1900
798 RW=1:CM=26:A$="FARBEN WERDEN":GOSUB 1900
800 RW=2:CM=26:A$="NACHGEZEICHNET":GOSUB1900
810 REM ZEICHNE FLASCHE
820 POKE UB,0:POKE DB,255:POKE LB,255:POKERB,255
830 SYS(VT),150,10,30,50
840 POKE UB,255:SYS(VC),150,70,50,60
850 POKE DB,0:SYS(VT),150,130,6,50
860 POKE DB,55:POKE UB,0:SYS(VS),150,204,15,181
870 POKE UB,255:SYS(VC),150,221,16,17
880 :
890 REM ZEICHENE WEINGLAS
900 POKE UB,20:SYS(SP),80,120,60
910 POKE UB,35:POKE DB,34:SYS(VS),80,34,10,110
920 :
930 REM ZEICHENT EIN PAAR TRAUBEN
940 SYS(SP),8,8,8:
950 SYS(SP),20,8:SYS(SP),40,8:SYS(SP),12,20:SYS(SP),30,20:SYS(SP),25,16
960 :
970 REM ZEICHNET APFEL BESTEHEND AUS 2 RINGEN UND EINEM KUGELFRAGMENT
980 POKE UB,255:POKE DB,255:POKE LB,255:POKE RB,59
990 SYS(VT),260,29,0,50:SYS(VT),260,79
1000 POKE UB,43:POKE DB,43:SYS(SP),260,54,60
1010 REM APFELSTIEL ZEICHNEN
1020 POKE RB,0:POKE DB,0:SYS(TR),272,104,10,15
1030 REM BLATT ZEICHNEN
1040 POKE DB,255:POKE RB,0:SYS(SP),256,119,15
1050 REM "RANDOM"-SCHATTIERTES ETTIKETT HINZUFUEGEN !
1060 POKE UB,255:POKE RB,255:POKE LB,6
1070 POKE SH,0:SYS(VC),150,72,50,48
1080 :
1090 REM BILD NACHCOLORIEREN
1100 SYS(CO),12
1110 X1=200:Y1=1:X2=315:Y2=100:DC=0:BC=2:GOSUB 1700
1120 X1=240:Y1=110:X2=255:Y2=150:BC=5:GOSUB 1700
1130 X1=260:Y1=110:X2=270:Y2=135:BC=9:GOSUB 1700
1140 X1=1:Y1=1:X2=48:Y2=30:BC=4:GOSUB 1700
1150 X1=140:Y1=205:X2=180:Y2=235:BC=7:GOSUB 1700
1160 X1=145:Y1=25:X2=195:Y2=115:BC=6:GOSUB 1700
1170 POKE 198,0:WAIT 198,1:POKE 198,0
1190 :
1200 REM "KAFFEE UND PLAETZCHEN"
1210 POKE SH,0 :REM RANDOM-SCHATTIERUNG FUER PLAETZCHEN
1220 SYS(CO),16*11+1:SYS(CL):POKE BO,1
1230 POKE LB,255:POKE RB,255:POKE UB,255:POKE DB,255 :REM KEIN SHAPE-FENSTER
1240 SYS(VT),60,20,20,60
1250 POKE RB,29:SYS(VT),99,60:POKE RB,255
1260 SYS(TR),188,180
1270 REM HALBTONSCHATTIERTE KAFFEETASSE HINZUFUEGEN.
1280 POKE SH,1:POKE UB,0:SYS(VT),188,20:POKE UB,255
1290 POKE DB,0:SYS(TR),278,110,20,40
1300 POKE DB,255:POKE UB,0:POKE LB,0
1310 SYS(TR),248,90,50,70:POKE LB,255:SYS(SP),248,110,10:POKE UB,255
1320 SYS(VC),308,100,10,10
1330 SYS(VC),188,77,60,57
1340 POKE DB,0:SYS(VT),188,134,40,60
1360 SYS(CO),1+16*9 :REM 1=WEISSER HINTERGRUND, 9=BRAUNE PUNKTE
1370 X1=130:Y1=1:X2=319:Y2=136:BC=1:DC=5:GOSUB 1700
1380 X1=250:Y1=144:X2=319:Y2=144:GOSUB 1700
1390 POKE 198,0:WAIT 198,1:POKE 198,0
1410 :
1420 REM ZEICHNE "VERBUNDENE" RINGE DURCH UEBERLAPPUNG DER FENSTER
1430 POKE LT,0 :REM BLAUE PUNKTE AUF WEISS, KEINE HINTERGRUNDBELEUTUNG
1440 SYS(CL):SYS(CO),1+16*6: REM 1=WEISSER INTERGRUND, 6=BLAUE PUNKTE
1450 POKE UB,255:POKE DB,255:POKE LB,255:POKE RB,255: REM KEINE FENSTER
1460 POKE SH,0 :REM ZUFAELLIGE SCHATTIERUNG
1470 SYS(TR),244,84,48,70
1480 SYS(TR),160,84:SYS(TR),76,84
1490 SYS(TR),118,156:SYS(TR),202,156
1500 REM UEBERLAPPENDE ZONEN HINZUFUEGEN
1510 POKE RB,0:POKE DB,0:SYS(TR),160,84:POKE RB,255:POKE LB,0
1520 SYS(TR),76,84:POKE DB,255:POKE UB,0:SYS(TR),118,156
1530 POKE LB,255:POKE RB,0:SYS(TR),202,156:POKE LB,27
1540 POKE DB,0:POKE UB,255:SYS(TR),160,84
1550 POKE DB,0:POKE UB,255:SYS(TR),160,84
1560 POKE LB,255:POKE UB,27:SYS(TR),244,84
1570 POKE LB,0:POKE RB,27:POKE UB,255:SYS(TR),244,84
1580 POKE 198,0
1590 GET A$:IF A$= "" THEN 1590
1600 SYS(TX):POKE BO,14:REM RUECKKEHR ZUM TEXTMODUS
1610 END
1620 :
1630 REM UNTERPROGRAMM ZU NACHCOLORIEREN VERSCHIEDENER ZONEN
1640 REM ACHTUNG: ES KANN JEWEILS NUR EINE RECHTECKIGE FLAECHE
1650 REM VON 8X8 PUNKTEN EINGEFAERBT WERDEN !!
1660 REM (X1,Y1)=UNTERER LINKER PUNKT, (X2,Y2)=OBERER RECHTER PUNKT
1690 REM DIE Y-KOORDINATEN MUESSEN "UNSKALLIERT" SEIN. FALLS SCALE-FLAG GESETZT:
1700 IF PEEK(SC)THEN Y1=(Y1+1)*213/256:Y2=(Y2+1)*213/256
1710 REM UEBERGABEVARIABLE IST CC.
1720 REM CC=16*DC + BC [DC=PUNKT FARBE, BC= HINTERGRUNDFARBE]
1730 CC=16*DC+BC
1740 FOR IX=INT(X1/8) TO INT(X2/8)
1750 FOR IY=INT(Y1/8) TO INT(Y2/8)
1760 POKE 34752+IX-40*IY,CC
1770 NEXT:NEXT:RETURN
1780 :
1790 REM "TEXT"-UNTERROUTINE ERMOEGLICHT EINFUEGEN VON TEXT IN DIE BILDER.
1800 REM "RW" UND "CM" SIND DIE ZEILEN(0-24) UND SPALTEN(0-39) KOORDINATEN DES
1810 REM ERSTEN BUCHSTABEN DES ZU DRUCKENDEN TEXTSTRINGS.
1820 REM UEBERGABEVARIABLE FUER TEXT IST A$
1830 REM "MD" ZEIGT DEN DRUCKMODUS AN:
1840 REM 1 - NORMAL ("SCHWARZE" BUCHSTABEN AUF "WEISSEM" HINTERGRUND)
1850 REM 2 - INVERSE ("WEISSE" BUCHSTABEN AUF "SCHWARZEM" HINTERGRUND)
1860 REM 3 - BUCHSTABEN WERDEN MIT LOGISCHEM ODER MIT HINTERGRUND VERKNUEPFT.
1870 REM 4 - BUCHSTABEN WERDEN MIT LOGISCHEM UND MIT HINTERGRUND VERKNUEPFT.
1880 REM 5 - BUCHSTABEN WERDEN MIT LOGISCHEM EXOR MIT HINTERGRUND VERKNUEPFT.
1890 :
1900 SB=40952:TB=54272:IF(MD AND 1)THEN TB=53248:REM BASISADRESSEN
1910 OS=320*RW+8*CM:REM ADRESSE DES ZEICHENGENERATORS
1920 POKE 56334,PEEK(56334)AND 254:REM DISABLE IRQ TIMER
1930 POKE 1,PEEK(1)AND 251:REM CHARACTER ROM EINSCHALTEN
1940 L=LEN(A$):FOR N=1 TO L:N8=N*8+OS+SB
1950 X=ASC(MID$(A$,N,1)):IF X>63 THEN X=X-64
1960 TC=TB+8*X
1970 ON MD GOTO 1980,1980,1990,2000,2010
1980 POKE 53231,36:GOTO 2020
1990 POKE 53231,17:GOTO 2020
2000 POKE 53231,49:GOTO 2020
2010 POKE 53231,81
2020 POKE252,N8/256:POKE251,N8-256*INT(N8/256)
2030 POKE254,TC/256:POKE253,TC-256*INT(TC/256)
2040 SYS(53221):NEXT
2050 POKE 1,PEEK(1)OR 4:POKE 56334,PEEK(56334)OR 1:REM NORMAL SCHALTEN
2060 RETURN